package com.naodong.shenluntiku.mvp.view.widget;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Paint.FontMetrics;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.View;

import com.naodong.shenluntiku.R;

public class CircleTextView extends View {

    private int defaultTextSize = 14;

    int bgColor = 0xffffffff;
    int textColor = 0xffffffff;

    private int textSize = defaultTextSize;
    private String text = "";


    public CircleTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init(context, attrs, defStyle);
    }

    public CircleTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context, attrs, 0);
    }

    public CircleTextView(Context context) {
        super(context);
        init(context, null, 0);
    }

    private void init(Context context, AttributeSet attrs, int defStyle) {
        TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.circleTextView, defStyle, 0);
        int count = array.getIndexCount();
        for (int i = 0; i < count; i++) {
            int attr = array.getIndex(i);
            switch (attr) {
                case R.styleable.circleTextView_bgColor:
                    bgColor = array.getColor(attr, bgColor);
                    break;
                case R.styleable.circleTextView_textColor:
                    textColor = array.getColor(attr, textColor);
                    break;
                case R.styleable.circleTextView_textSize:
                    textSize = (int) array.getDimension(attr, TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, textSize, getResources().getDisplayMetrics()));
                    break;
                case R.styleable.circleTextView_text:
                    text = array.getString(attr);
                    break;
            }

        }
        array.recycle();
    }

    public void setText(String text) {

        this.text = text;
        invalidate();
    }

    public void setTextColor(int textColor) {
        this.textColor = getResources().getColor(textColor);
        invalidate();
    }

    public void setBgColor(int bgColor) {
        this.bgColor = getResources().getColor(bgColor);
        invalidate();
    }

    /**
     * sp
     *
     * @param textSize
     */
    public void setTextSize(int textSize) {
        this.textSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, textSize, getResources().getDisplayMetrics());
        invalidate();
    }

    @Override
    public void draw(Canvas canvas) {

        super.draw(canvas);

        Paint p = new Paint();
        p.setAntiAlias(true); // 去锯齿
        p.setColor(bgColor);

        int radius = getWidth() / 2; // 假设图片是正方形的

        canvas.drawCircle(radius, radius, radius, p); // r=radius,

        p.setColor(textColor);
        p.setTextSize(textSize);
        p.setTextAlign(Paint.Align.CENTER);

        // 转载请注明出处：http://blog.csdn.net/hursing


        FontMetrics fontMetrics = p.getFontMetrics();
        // 计算文字高度
        float fontHeight = fontMetrics.bottom - fontMetrics.top;
        float textWidth = p.measureText(text);
        // 计算文字baseline
        float textBaseY = getWidth() - (getWidth() - fontHeight) / 2 - fontMetrics.bottom;

        canvas.drawText(text, getWidth()/2, textBaseY, p);

    }

}
